﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SoftHotel.Models;

namespace SoftHotel.Controllers
{
    public class ProductoController : Controller
    {
        //
        // GET: /Producto/
        static ProductoDAO listaprod = new ProductoDAO();
        private static bool vieneDeEditar = false;
        private static bool vieneDeEliminar = false;
        private static bool flag = false;
        private static string nombreOriginal = "";
        static ProductoModel producto;
        static List<ProductoModel> busquedax;
        static ProductoDAO listaprodbusqueda = new ProductoDAO();
        public ProductoController(){
        }
        public ActionResult Index()
        {
            listaprodbusqueda.pbuscadis = new List<ProductoModel>() { };
            busquedax = new List<ProductoModel>() { };
            return View();
        }
        [HttpPost]
        public ActionResult Index(ProductoModel prod, string button)
        {
            if (button == "Buscar")
            {
                producto = prod;
                busquedax = listaprod.buscar(producto);
            }
            listaprodbusqueda.pbuscadis = busquedax;
            return RedirectToAction(button, "Producto");
        }
        public ActionResult Agregar()
        {
            if (!vieneDeEditar && !vieneDeEliminar)
            {
                listaprod.productos = new List<ProductoModel>() { };
            }
            else
            {
                vieneDeEditar = false;
                vieneDeEliminar = false;
            }
            ViewBag.Categorias = listaprod.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprod.obtenerTipos("ESTADO_PRODUCTO");
            ViewBag.ListaProd = listaprod.productos;
            return View();
        }
        [HttpPost]
        public ActionResult Agregar(ProductoModel prod, string button,string[] checkbox)
        {
            string mensaje = "";
            bool esta = listaprod.esta(prod.descripcion);
            if (esta) mensaje = "El producto ya esta agregado";
            if (button == "Añadir" && ModelState.IsValid && !listaprod.esta(prod.descripcion) && esta == false )
            {
                //listaprod.productos.Add(prod);
                listaprod.insertar2(prod);
                return RedirectToAction("Index", "Producto"); 
            }
            else if (button == "Cancelar")
            {
                return RedirectToAction("Index", "Producto"); 
                //listaprod.eliminar();                
            }
            ViewBag.mensaje = mensaje;
            ViewBag.Categorias = listaprod.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprod.obtenerTipos("ESTADO_PRODUCTO");
            ViewBag.ListaProd = listaprod.productos;
            return View();
        }                
        [HttpPost]
        public ActionResult AgregarGuardarCancelar(string button)
        {
            string method = "Index";
            if ( button == "Guardar"){
                listaprod.insertar();
            }
            return RedirectToAction(method, "Producto"); ;
        }
        public ActionResult Agregar2()
        {
            return View(listaprod);
        }
        [HttpPost]
        public ActionResult Agregar2(string button)
        {
            return View(listaprod);
        }        
        public ActionResult Buscar()
        {
            if (flag)
            {
                string mensaje = "";
                if (flag) mensaje = "El producto esta inactivo, no puede eliminarse";
                ViewBag.mensaje = mensaje;                 
                flag = false;
            }
            return View(listaprodbusqueda);
        }
        [HttpPost]
        public ActionResult Buscar(string button)
        {
            
            if (button == "Nueva Busqueda")
            {
                return RedirectToAction("Buscar2", "Producto");

            }
            if (button == "Regresar")
            {
                return RedirectToAction("Index", "Producto");

            }
            return RedirectToAction(button, "Producto");
        }
        public ActionResult Buscar2()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Buscar2(ProductoModel prod, string button)
        {
            if (button == "Buscar")
            {

                producto = prod;
                busquedax = listaprod.buscar(producto);
            }
            listaprodbusqueda.pbuscadis = busquedax;
            return RedirectToAction(button, "Producto");
        }
        public ActionResult Editar(string descripcion)
        {
            nombreOriginal = descripcion;
            ViewBag.Categorias = listaprod.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprod.obtenerTipos("ESTADO_PRODUCTO");
            int i = listaprod.buscar(descripcion);
            ProductoModel producto = listaprod.productos[i];
            return View(producto);
        }
        [HttpPost]
        public ActionResult Editar(ProductoModel prod)
        {
            if (ModelState.IsValid)
            {
                listaprod.guardar(prod, nombreOriginal);
                vieneDeEditar = true;
                return RedirectToAction("Agregar");
            }
            ViewBag.Categorias = listaprod.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprod.obtenerTipos("ESTADO_PRODUCTO");
            return View(prod);
        }
        public ActionResult Editar2(string descripcion)
        {
            nombreOriginal = descripcion;
            ViewBag.Categorias = listaprodbusqueda.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprodbusqueda.obtenerTipos("ESTADO_PRODUCTO");
            int i = listaprodbusqueda.buscar2(descripcion);            
            ProductoModel producto = listaprodbusqueda.pbuscadis[i];
            return View(producto);
        }
        [HttpPost]
        public ActionResult Editar2(ProductoModel prod)
        {
            if (ModelState.IsValid)
            {
                listaprod.guardar2(prod, nombreOriginal);
                vieneDeEditar = true;
                return RedirectToAction("Buscar", "Producto");
            }
            ViewBag.Categorias = listaprod.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprod.obtenerTipos("ESTADO_PRODUCTO");
            return View(prod);
        }
        public ActionResult Mostrar(string descripcion)
        {
            nombreOriginal = descripcion;
            ViewBag.Categorias = listaprodbusqueda.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprodbusqueda.obtenerTipos("ESTADO_PRODUCTO");
            int i = listaprodbusqueda.buscar2(descripcion);
            ProductoModel producto = listaprodbusqueda.pbuscadis[i];
            return View(producto);
        }        
        [HttpPost]
        public ActionResult Mostrar(ProductoModel prod,string button)
        {            
            return RedirectToAction("Buscar", "Producto");
        }
        public ActionResult Eliminar(string descripcion)
        {
            nombreOriginal = descripcion;
            ViewBag.Categorias = listaprodbusqueda.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprodbusqueda.obtenerTipos("ESTADO_PRODUCTO");
            int i = listaprodbusqueda.buscar2(descripcion);
            ProductoModel producto = listaprodbusqueda.pbuscadis[i];
            if (producto.estado == "Inactivo")
            {
                flag = true;
                return RedirectToAction("Buscar","Producto");
            }
            return View(producto);
        }
        [HttpPost]
        public ActionResult Eliminar(ProductoModel prod, string button)
        {
            if (button == "Aceptar")
            {
                producto = prod;
                busquedax = listaprodbusqueda.eliminar(producto);
            }
            listaprodbusqueda.pbuscadis = busquedax;
            return RedirectToAction("Buscar", "Producto");
        }
        public ActionResult Eliminar2(string descripcion)
        {
            nombreOriginal = descripcion;
            ViewBag.Categorias = listaprod.obtenerTipos("CATEGORIA_PRODUCTO");
            ViewBag.Estados = listaprod.obtenerTipos("ESTADO_PRODUCTO");
            int i = listaprod.buscar(descripcion);
            ProductoModel producto = listaprod.productos[i];
            return View(producto);
        }
        [HttpPost]
        public ActionResult Eliminar2(ProductoModel prod, string button)
        {
            if (button == "Aceptar")
            {

                producto = prod;
                busquedax = listaprod.eliminar2(producto);
                vieneDeEliminar = true;
            }
            listaprod.productos = busquedax;
            return RedirectToAction("Agregar");
        }

    }
}
